3.07. Типы SQL-команд
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Типы SQL-команд
В ходе развития SQL сложилась устоявшаяся практика деления команд языка на несколько логических групп, каждая из которых отвечает за определённый аспект работы с данными и структурами базы данных. Это деление принято называть подъязыками SQL (на английском звучит лучше - sublanguages), хотя в повседневной практике чаще говорят «типы SQL-команд». Такая классификация не является строгой, поэтому скорее вольное деление.
- DDL - Data Definition Language (язык определения данных), используется для создания, изменения, удаления объектов структуры данных (таблиц, индексов, схем и т.д.).
Основные команды DDL:
CREATE- создание объекта (таблица, индекс);ALTER- изменение структуры существующего объекта;DROP- удаление объекта из базы данных;TRUNCATE- удаление всех данных из таблицы с сохранением её структуры (иногда относят к DML, но чаще к DDL из-за эффекта на метаданные);RENAME- переименование объекта (не во всех СУБД).
DDL-команды обычно неявно фиксируют транзакции, то есть COMMIT происходит автоматически после выполнения. О транзакциях мы поговорим отдельно.
- DML - Data Manipulation Language (язык манипулирования данными), предназначен для работы с данными внутри таблиц - добавления, изменения, удаления записей.
Основные команды DML:
INSERT- добавление новых строк;UPDATE- изменение существующих строк;DELETE- удаление строк;MERGE(илиUPSERT) - условное обновление или вставка данных (в зависимости от наличия записи).
DML-операции выполняются в рамках транзакций и могут быть отменены (ROLLBACK) или зафиксированы (COMMIT).
- DQL - Data Query Language (язык запросов к данным), используется для выборки из базы данных. Это основной инструмент для получения информации. Здесь одна основная команда -
SELECTдля извлечения данных по заданным критериям. Некоторые источники считают SELECT частью DML, поскольку он «манипулирует данными», извлекая их.
- DCL - Data Control Language (язык управления доступом к данным), управляет правами доступа пользователей и ролям в базе данных.
Основные команды DCL:
GRANT- предоставление привилегий.REVOKE- отмена ранее выданных привилегий.
DCL нужен для обеспечения безопасности и аудита в многопользовательских системах.
- TCL - Transaction Control Language (язык управления транзакциями), управляет группами операций как единой транзакцией с возможностью подтверждения или отката изменений.
Основные команды TCL:
COMMIT- фиксация всех изменений текущей транзакции.ROLLBACK- откат всех изменений текущей транзакции.SAVEPOINT- установка точки отката внутри транзакции (позволяет откатиться не ко всему началу, а к промежуточному состоянию).
TCL особенно важен при работе с DML-операциями, где требуется атомарность (все или ничего).
Такое деление возникло не в самом стандарте SQL, а в учебных и методичеких материалах, а также в документации вендоров (Oracle, IBM, Microsoft и др.). Оно помогает структурировать обучение и понимание SQL, разделяя его функциональность по назначению. Поэтому граница между подъязыками не всегда чёткие (примеры - TRUNCATE и SELECT, о которых я упомянул ранее). Плюс, некоторые СУБД расширяют функциональность, добавляя новые команды, что усложняет такое деление на команды.